In today's computing environments, many users transmit data over unsecure communication paths, such as the Internet. However, the possibility exists that an unauthorized third party may access the data during transmission. In order to protect the data that is being transmitted, users typically encrypt the data such that if an unauthorized third party intercepts the data, the unauthorized third party will not be able to access the data. Typically, the data is encrypted with an encryption algorithm used in conjunction with a key. In many instances, the key is limited to a certain byte and character length, such as 256 bits. In order to gain access to the encrypted data, an unauthorized user must have both the encryption algorithm used to encrypt the data and the key used in conjunction with the encryption algorithm during encryption of the data. Often times, the encryption algorithm is well-known and the unauthorized third party only needs to determine the key that was used during data encryption. Typically, an unauthorized third party develops an algorithm that simply guesses the key using an iterative process. In an example where the key has 256 bytes, the algorithm will iteratively guess keys that have 256 bytes. At some point, the algorithm will guess the correct key and the unauthorized third party may access the encrypted data using the correct key.
In order to prevent an unauthorized third party from accessing encrypted data, what is needed is a method for generating a key that has an infinite length such that an unauthorized third party cannot guess the key in order to decrypt and gain access to data.